package cn.tedu.collection;

import java.util.ArrayList;
import java.util.List;

/**本类用于测试泛型的优点1*/
public class TestGeneric1 {
    public static void main(String[] args) {
        /**1.泛型是怎么来的？----集合想要模拟数组的数据类型检查*/
        String[] a = new String[5];//创建一个用来存放String类型数据的数组，长度为5
        a[2] = "泡泡";
        a[4] = "涛涛";
        //数组的好处：在编译时期检查数据的类型，如果不是要求的数据类型就会报错
        //只能通过下标操作数组，长度不可改变
//      a[0] = 1;
//        a[0] = String.valueOf(1);//将int类型的1转为String类型
        /**2.泛型通常结合着集合一起使用*/
        /**3.引入泛型----主要目的是想通过泛型来约束集合中的元素类型
         * 4.引入泛型的好处，可以把报错的时机提前，在编译时期就报错，而不是运行后才抛出异常
         * 向集合中添加元素时，会先检查元素的数据类型，不是要求的类型就编译失败*/
        List list = new ArrayList();//注意导包：java.util
        //没有泛型，数据类型根本没有约束----太自由！
        list.add("江江");
        list.add(1);
        list.add(8.8);
        list.add('a');
        System.out.println(list);

        List<String> list2 = new ArrayList();
        list2.add("雷神");//<String>约束了类型以后，只可以传String类型的数据
//        list2.add(2);

        /**5.<type>----type的值应该如何写？
         * 需要查看集合要存放的数据类型是什么，根据类型来定义
         * 但注意：type必须是引用类型，不是基本类型*/
        //创建一个存放数据100 200 300 的集合
        List<Integer> list1 = new ArrayList();
        list1.add(100);
        list1.add(200);
        list1.add(300);

    }
}
